Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for alternative ID types #2622

Merged
merged 12 commits into from
Dec 11, 2024
Merged

Add support for alternative ID types #2622

merged 12 commits into from
Dec 11, 2024

Conversation

stwiname
Copy link
Collaborator

@stwiname stwiname commented Dec 10, 2024

Description

Allows specifying a different ID type other than text. It can be 'BigInt', 'Int', 'Float', 'ID' or 'String'. This is useful when you want to order by ID but not in a lexicographical order.

In order to avoid growing this PR and the complexity of types, codegen has been updated to generate some Compat types to work with internal types that expect the id to be a string.

Fixes #2562

Type of change

Please delete options that are not relevant.

Checklist

  • I have tested locally
  • I have performed a self review of my changes
  • Updated any relevant documentation Document @dbType directive documentation#577
  • Linked to any relevant issues
  • I have added tests relevant to my changes
  • Any dependent changes have been merged and published in downstream modules
  • My code is up to date with the base branch
  • I have updated relevant changelogs. We suggest using chan

Copy link

github-actions bot commented Dec 10, 2024

Coverage report for .

Caution

Test run failed

St.
Category Percentage Covered / Total
🟡 Statements
71.02% (+0.91% 🔼)
21671/30514
🟡 Branches
79.41% (+1.12% 🔼)
2820/3551
🟡 Functions
73.18% (+10.68% 🔼)
1195/1633
🟡 Lines
71.02% (+0.91% 🔼)
21671/30514
Show new covered files 🐣
St.
File Statements Branches Functions Lines
🟢
... / migrate.ts
85.34% 16.67% 100% 85.34%
🟢
... / migrate-abis.controller.ts
95% 87.5% 100% 95%
🟢
... / constants.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / ethereum.ts
82.28% 83.33% 100% 82.28%
🟢
... / migrate-manifest.controller.ts
88% 73.33% 88.89% 88%
🟢
... / migrate-mapping.controller.ts
100% 100% 100% 100%
🟢
... / migrate-controller.ts
92.41% 85.19% 100% 92.41%
🟢
... / migrate.fixtures.ts
100% 100% 100% 100%
🟢
... / migrate-schema.controller.ts
97.23% 79.49% 100% 97.23%
🔴
... / types.ts
0% 0% 0% 0%
🟢
... / createProject.fixtures.ts
94.92% 77.78% 100% 94.92%
🟢
... / config.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / moduleLoader.ts
56% 40% 100% 56%
🟢
... / types.ts
100% 100% 100% 100%
🔴
... / utils.ts
0% 0% 0% 0%
🟢
... / networkFamily.ts
92.59% 88.89% 100% 92.59%
🟢
... / IPFSHTTPClientLite.ts
95.59% 80% 100% 95.59%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / utils.ts
92% 66.67% 100% 92%
🟢
... / admin.controller.ts
98.62% 96.55% 92.86% 98.62%
🔴
... / blockRange.ts
46.67% 100% 50% 46.67%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / SubqueryProject.ts
96.55% 84.62% 85.71% 96.55%
🟢
... / core.module.ts
100% 100% 100% 100%
🟢
... / dictionary.fixtures.ts
100% 100% 100% 100%
🟢
... / monitor.service.ts
94.4% 87.36% 97.06% 94.4%
🔴
... / sandbox.service.ts
45.45% 66.67% 50% 45.45%
🟢
... / baseCache.service.ts
94.59% 91.67% 83.33% 94.59%
🟢
... / baseStoreModel.service.ts
93.22% 83.33% 100% 93.22%
🟢
... / cacheable.ts
89.29% 75% 100% 89.29%
🟡
... / csvStore.ts
73.96% 73.68% 85.71% 73.96%
🟡
... / exporter.ts
70% 71.43% 71.43% 70%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / cacheMetadata.ts
87.22% 75.56% 93.33% 87.22%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / metadata.ts
53.01% 71.43% 55.56% 53.01%
🟢
... / utils.ts
100% 100% 100% 100%
🟢
... / cacheModel.ts
88.86% 89.29% 90% 88.86%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / model.ts
93.83% 70.37% 100% 93.83%
🟢
... / utils.ts
100% 100% 100% 100%
🟡
... / cachePoi.ts
76.84% 89.47% 85.71% 76.84%
🟢
... / index.ts
100% 100% 100% 100%
🔴
... / poi.ts
41.07% 71.43% 44.44% 41.07%
🟢
... / setValueModel.ts
85.26% 83.78% 85.71% 85.26%
🟡
... / storeCache.service.ts
77.37% 72.41% 80% 77.37%
🟡
... / storeModel.service.ts
64.84% 61.54% 71.43% 64.84%
🟢
... / types.ts
100% 100% 100% 100%
🟢
... / utils.ts
93.75% 66.67% 100% 93.75%
🟢
... / worker.core.module.ts
100% 100% 0% 100%
🔴
... / worker.monitor.service.ts
39.53% 100% 0% 39.53%
🔴
... / meta.controller.ts
53.33% 100% 0% 53.33%
🟡
... / meta.module.ts
60% 100% 0% 60%
🟡
... / process.ts
61.29% 100% 40% 61.29%
🔴
... / foreceClean.init.ts
47.62% 100% 0% 47.62%
🔴
... / reindex.init.ts
33.33% 100% 0% 33.33%
🟢
... / autoQueue.ts
88.78% 86.84% 80% 88.78%
🟢
... / index.ts
100% 100% 100% 100%
🟢
... / queue.ts
81.94% 81.82% 75% 81.94%
🟢
... / rampQueue.ts
95.74% 91.67% 100% 95.74%
🟢
... / string.ts
100% 100% 100% 100%
🔴
... / datasourceProcessors.ts
0% 0% 0% 0%
🔴
... / index.ts
0% 0% 0% 0%
🔴
... / types.ts
0% 0% 0% 0%
🔴
... / networking.ts
31.58% 100% 0% 31.58%
Show files with reduced coverage 🔻
St.
File Statements Branches Functions Lines
🔴
... / delete.ts
48.72% (-5.57% 🔻)
100%
50% (+50% 🔼)
48.72% (-5.57% 🔻)
🔴
... / promote.ts
44.19% (-4.53% 🔻)
100%
50% (+50% 🔼)
44.19% (-4.53% 🔻)
🟡
... / add.ts
61.29% (-0.78% 🔻)
100%
50% (+50% 🔼)
61.29% (-0.78% 🔻)
🟢
... / publish.ts
83.72% (-5.61% 🔻)
60% (+2.86% 🔼)
100%
83.72% (-5.61% 🔻)
🔴
... / add-chain-controller.ts
39.62% (-0.45% 🔻)
66.67% 30%
39.62% (-0.45% 🔻)
🟢
... / build-controller.ts
90.44% (-0.86% 🔻)
71.43% (+14.29% 🔼)
100%
90.44% (-0.86% 🔻)
🟢
... / codegen-controller.ts
88.59% (-0.8% 🔻)
85.19% (+9.6% 🔼)
100%
88.59% (-0.8% 🔻)
🟡
... / deploy-controller.ts
64.94% (+27.48% 🔼)
72.73% (-5.05% 🔻)
64.29% (+39.29% 🔼)
64.94% (+27.48% 🔼)
🟢
... / generate-controller.ts
97.75% (+0.1% 🔼)
93.24% (-0.79% 🔻)
100%
97.75% (+0.1% 🔼)
🟡
... / init-controller.ts
73.06% (+2.57% 🔼)
54.55% (-13.45% 🔻)
61.11% (+7.78% 🔼)
73.06% (+2.57% 🔼)
🟢
... / project-controller.ts
83.13% (-14.13% 🔻)
42.86% (-17.14% 🔻)
75% (-25% 🔻)
83.13% (-14.13% 🔻)
🟢
... / publish-controller.ts
82.63% (+2.38% 🔼)
70.27% (-0.84% 🔻)
100%
82.63% (+2.38% 🔼)
🟢
... / models.ts
96.11% (-3.33% 🔻)
96% (+3.69% 🔼)
92.31% (-7.69% 🔻)
96.11% (-3.33% 🔻)
🟢
... / ProjectManifestVersioned.ts
82.19% (-2.74% 🔻)
88.89% (-11.11% 🔻)
61.54% (+3.21% 🔼)
82.19% (-2.74% 🔻)
🟢
... / model.ts
95.43% (-2.29% 🔻)
100%
80% (+8.57% 🔼)
95.43% (-2.29% 🔻)
🔴
... / models.ts
47.06% (-52.94% 🔻)
100%
0% (-100% 🔻)
47.06% (-52.94% 🔻)
🟡
... / load.ts
66.33% (+7.14% 🔼)
47.37% (-8.19% 🔻)
83.33% (+16.67% 🔼)
66.33% (+7.14% 🔼)
🟡
... / github-reader.ts
65.52% (-23.77% 🔻)
85.71% (+10.71% 🔼)
71.43% (-11.9% 🔻)
65.52% (-23.77% 🔻)
🟢
... / reader.ts
81.58% (-7.89% 🔻)
57.14% (-17.86% 🔻)
100%
81.58% (-7.89% 🔻)
🟢
... / base.ts
90.65% (-7.35% 🔻)
91.67% (-8.33% 🔻)
80%
90.65% (-7.35% 🔻)
🔴
... / models.ts
55.09% (-44.91% 🔻)
100%
44.44% (-55.56% 🔻)
55.09% (-44.91% 🔻)
🟢
... / NodeConfig.ts
87.93% (-0.68% 🔻)
76.67% (-2.96% 🔻)
85.11% (-0.94% 🔻)
87.93% (-0.68% 🔻)
🟢
... / ProjectUpgrade.service.ts
90.64% (+3.56% 🔼)
80.95% (-10.41% 🔻)
96.15% (+4.85% 🔼)
90.64% (+3.56% 🔼)
🟡
... / configure.module.ts
76.89% (-7.68% 🔻)
54.76% (-9.24% 🔻)
100%
76.89% (-7.68% 🔻)
🟢
... / db.module.ts
89.06% (+0.78% 🔼)
62.5% (-20.83% 🔻)
80%
89.06% (+0.78% 🔼)
🟡
... / migration-helpers.ts
75.28% (-0.74% 🔻)
88.24% (+7.64% 🔼)
90.91%
75.28% (-0.74% 🔻)
🟢
... / migration.ts
86.01% (+3.73% 🔼)
83.58% (+3.85% 🔼)
90% (-0.48% 🔻)
86.01% (+3.73% 🔼)
🟡
... / StoreOperations.ts
65.88% (-26.43% 🔻)
64.71% (-20.29% 🔻)
87.5% (-12.5% 🔻)
65.88% (-26.43% 🔻)
🔴
... / base-block-dispatcher.ts
41.53% (-5.82% 🔻)
100%
9.09% (-0.91% 🔻)
41.53% (-5.82% 🔻)
🔴
... / worker-block-dispatcher.ts
15.02% (-35.19% 🔻)
100%
0% (-27.27% 🔻)
15.02% (-35.19% 🔻)
🔴
... / coreDictionary.ts
45.33% (-54.67% 🔻)
85.71% (-8.73% 🔻)
77.78% (-22.22% 🔻)
45.33% (-54.67% 🔻)
🟢
... / dictionary.service.ts
84.73% (-0.41% 🔻)
80.56% (-5.16% 🔻)
91.67% (+0.76% 🔼)
84.73% (-0.41% 🔻)
🟢
... / utils.ts
92.59% (-3.7% 🔻)
69.23% (-24.89% 🔻)
100%
92.59% (-3.7% 🔻)
🟡
... / dictionaryV1.ts
64.49% (-28.74% 🔻)
61.29% (-16.97% 🔻)
91.67% (-8.33% 🔻)
64.49% (-28.74% 🔻)
🟡
... / dictionaryV2.ts
67.37% (-14.31% 🔻)
68% (+2.78% 🔼)
88.89% (-11.11% 🔻)
67.37% (-14.31% 🔻)
🔴
... / ds-processor.service.ts
41.26% (-20.84% 🔻)
75%
66.67% (-20.83% 🔻)
41.26% (-20.84% 🔻)
🟢
... / PoiBlock.ts
83.87% (-14.52% 🔻)
96.55%
75% (-25% 🔻)
83.87% (-14.52% 🔻)
🟡
... / poi.service.ts
68.42% (+44.5% 🔼)
59.26% (-40.74% 🔻)
90% (+61.43% 🔼)
68.42% (+44.5% 🔼)
🔴
... / sandbox.ts
59.09% (-8.89% 🔻)
53.33% (-3.81% 🔻)
57.14% (-4.4% 🔻)
59.09% (-8.89% 🔻)
🔴
... / entity.ts
50% (-11.54% 🔻)
100%
50% (+50% 🔼)
50% (-11.54% 🔻)
🔴
... / store.ts
30% (-2.2% 🔻)
62.5% (-37.5% 🔻)
33.33% (+33.33% 🔼)
30% (-2.2% 🔻)
🟢
... / test.runner.ts
95.06% (-4.27% 🔻)
77.78% (+4.44% 🔼)
75% (-25% 🔻)
95.06% (-4.27% 🔻)
🔴
... / testing.service.ts
12% (-16.57% 🔻)
100% 0%
12% (-16.57% 🔻)
🟡
... / unfinalizedBlocks.service.ts
76.09% (-7.9% 🔻)
75.47% (-21.25% 🔻)
96% (+4.33% 🔼)
76.09% (-7.9% 🔻)
🟡
... / worker.builder.ts
60.68% (-18.5% 🔻)
65.38% 80%
60.68% (-18.5% 🔻)
🔴
... / worker.cache.service.ts
48.78% (-9.76% 🔻)
100% 0%
48.78% (-9.76% 🔻)
🔴
... / worker.connectionPoolState.manager.ts
38.21% (-22.76% 🔻)
100% 0%
38.21% (-22.76% 🔻)
🔴
... / worker.dynamic-ds.service.ts
44.44% (-17.78% 🔻)
100% 0%
44.44% (-17.78% 🔻)
🔴
... / worker.service.ts
20.35% (-24.29% 🔻)
100% 0%
20.35% (-24.29% 🔻)
🔴
... / worker.ts
41.18% (-1.28% 🔻)
100% 0%
41.18% (-1.28% 🔻)
🔴
... / worker.unfinalizedBlocks.service.ts
26.79% (-73.21% 🔻)
100%
0% (-100% 🔻)
26.79% (-73.21% 🔻)
🔴
... / logger.ts
47.89% (-16.59% 🔻)
33.33%
40% (+20% 🔼)
47.89% (-16.59% 🔻)
🔴
... / event.listener.ts
15.15% (-65.66% 🔻)
100%
0% (-25% 🔻)
15.15% (-65.66% 🔻)
🔴
... / health.controller.ts
37.93% (-17.24% 🔻)
100%
0% (-50% 🔻)
37.93% (-17.24% 🔻)
🔴
... / health.service.ts
21.05% (-36.48% 🔻)
100%
0% (-20% 🔻)
21.05% (-36.48% 🔻)
🔴
... / meta.service.ts
34.26% (-35.26% 🔻)
100% (+20% 🔼)
0% (-40% 🔻)
34.26% (-35.26% 🔻)
🔴
... / ready.controller.ts
34.78% (-21.74% 🔻)
100%
0% (-50% 🔻)
34.78% (-21.74% 🔻)
🔴
... / ready.service.ts
37.5% (-54.17% 🔻)
100%
0% (-66.67% 🔻)
37.5% (-54.17% 🔻)
🔴
... / forceClean.service.ts
21.05% (-5.26% 🔻)
100% 0%
21.05% (-5.26% 🔻)
🔴
... / reindex.service.ts
18.62% (-14.71% 🔻)
100% 0%
18.62% (-14.71% 🔻)
🟡
... / blocks.ts
71.21% (-28.79% 🔻)
91.67% (+2.78% 🔼)
75% (-25% 🔻)
71.21% (-28.79% 🔻)
🟡
... / project.ts
71.88% (-1.49% 🔻)
75% (+0.42% 🔼)
77.78%
71.88% (-1.49% 🔻)
🟢
... / promise.ts
86.44% (-5.32% 🔻)
100% (+13.64% 🔼)
71.43% (-14.29% 🔻)
86.44% (-5.32% 🔻)
🟢
... / reindex.ts
82.05% (+48.01% 🔼)
14.29% (-85.71% 🔻)
100% (+100% 🔼)
82.05% (+48.01% 🔼)
🔴
... / yargs.ts
40.69% (-4.8% 🔻)
100% 14.29%
40.69% (-4.8% 🔻)
🟡
... / apiPromise.connection.ts
78.13% (+9.05% 🔼)
54.55% (-25.45% 🔻)
66.67% (+23.81% 🔼)
78.13% (+9.05% 🔼)
🟡
... / block-dispatcher.service.ts
62.83% (-6.04% 🔻)
100%
28.57% (+3.57% 🔼)
62.83% (-6.04% 🔻)
🔴
... / worker-block-dispatcher.service.ts
24.16% (-12.8% 🔻)
100% 0%
24.16% (-12.8% 🔻)
🟢
... / substrateDictionary.service.ts
88.68% (-1.89% 🔻)
38.46% (-34.27% 🔻)
100% (+20% 🔼)
88.68% (-1.89% 🔻)
🔴
... / substrateDictionaryV1.ts
58.25% (-27.23% 🔻)
78.95% (+9.18% 🔼)
46.15% (-37.18% 🔻)
58.25% (-27.23% 🔻)
🟡
... / substrateDictionaryV2.ts
70.79% (-4.72% 🔻)
50% (-25% 🔻)
33.33%
70.79% (-4.72% 🔻)
🟢
... / fetch.module.ts
89.6% (-2.27% 🔻)
50% (-25% 🔻)
100%
89.6% (-2.27% 🔻)
🔴
... / indexer.manager.ts
50% (-7.55% 🔻)
100%
20% (+10.91% 🔼)
50% (-7.55% 🔻)
🟡
... / base-runtime.service.ts
72.17% (-0.15% 🔻)
76.92% (+1.92% 🔼)
77.78% (+2.78% 🔼)
72.17% (-0.15% 🔻)
🟢
... / runtimeService.ts
94.52% (+2.31% 🔼)
81.82% (-7.07% 🔻)
100% (+20% 🔼)
94.52% (+2.31% 🔼)
🟡
... / types.ts
70.45% (-14.84% 🔻)
100% 0%
70.45% (-14.84% 🔻)
🟢
... / unfinalizedBlocks.service.ts
85.45% (-0.82% 🔻)
100%
60% (+10% 🔼)
85.45% (-0.82% 🔻)
🔴
... / http.ts
50.58% (-29.34% 🔻)
50% (+10% 🔼)
42.86% (+12.09% 🔼)
50.58% (-29.34% 🔻)
🟢
... / project.ts
88.73% (-0.16% 🔻)
68.18% 87.5%
88.73% (-0.16% 🔻)
🟢
... / buffer.ts
95.12% (-4.88% 🔻)
95.83% (-4.17% 🔻)
90.48% (+6.27% 🔼)
95.12% (-4.88% 🔻)
🟡
... / logger.ts
70.35% (+0.75% 🔼)
51.85% (-3.15% 🔻)
78.57% (+3.57% 🔼)
70.35% (+0.75% 🔼)

Test suite run failed

Failed tests: 9/605. Failed suites: 3/108.
  ● Store cache upper threshold › waits for flushing when threshold is met

    expect(received).toBeGreaterThanOrEqual(expected)

    Expected: >= 1000
    Received:    999

      293 |
      294 |     // Should be more than 1s, we set the db tx.commit to take 1s
    > 295 |     expect(end - start).toBeGreaterThanOrEqual(1000);
          |                         ^
      296 |   });
      297 | });
      298 |

      at Object.<anonymous> (packages/node-core/src/indexer/storeModelProvider/storeCache.service.spec.ts:295:25)


  ● Dictionary V1 › coreDictionary › can use scoped dictionary query

    expect(received).toEqual(expected) // deep equality

    Expected: 0
    Received: undefined

       95 |       // Out of range of scoped entries
       96 |       const result = await dictionary.getData(100, 199, 10);
    >  97 |       expect(result?.batchBlocks.length).toEqual(0);
          |                                          ^
       98 |
       99 |       const result2 = await dictionary.getData(1000, 10000, 10);
      100 |       expect(result2?.batchBlocks.length).toBeGreaterThan(0);

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts:97:42)

  ● Dictionary V1 › init metadata and get metadata

    ApolloError: Response not successful: Received status code 500

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:777:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    ServerError: Response not successful: Received status code 500

      at Object.throwServerError (node_modules/@apollo/client/link/utils/throwServerError.js:2:17)
      at throwServerError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:120:9)
      at node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:176:48

  ● Dictionary V1 › return dictionary query result

    expect(received).toBeGreaterThan(expected)

    Matcher error: received value must be a number or bigint

    Received has value: undefined

      160 |     const endBlock = 10001;
      161 |     const dic = await dictionary.getData(startBlock, endBlock, batchSize);
    > 162 |     expect(dic?.batchBlocks.length).toBeGreaterThan(1);
          |                                     ^
      163 |     expect(dic?.batchBlocks[0]).toBe(1463);
      164 |   });
      165 |

      at Object.<anonymous> (packages/node-core/src/indexer/dictionary/v1/dictionaryV1.spec.ts:162:37)

  ● Individual dictionary V1 test › return undefined when dictionary api failed

    ApolloError: Response not successful: Received status code 500

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:777:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    ServerError: Response not successful: Received status code 500

      at Object.throwServerError (node_modules/@apollo/client/link/utils/throwServerError.js:2:17)
      at throwServerError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:120:9)
      at node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:176:48

  ● Individual dictionary V1 test › limits the dictionary query to that block range

    ApolloError: Response not successful: Received status code 500

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:777:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    ServerError: Response not successful: Received status code 500

      at Object.throwServerError (node_modules/@apollo/client/link/utils/throwServerError.js:2:17)
      at throwServerError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:120:9)
      at node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:176:48

  ● Individual dictionary V1 test › test query the correct range

    ApolloError: Response not successful: Received status code 500

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:777:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    ServerError: Response not successful: Received status code 500

      at Object.throwServerError (node_modules/@apollo/client/link/utils/throwServerError.js:2:17)
      at throwServerError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:120:9)
      at node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:176:48

  ● Individual dictionary V1 test › use minimum value of event/extrinsic returned block as batch end block

    ApolloError: Response not successful: Received status code 500

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:777:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    ServerError: Response not successful: Received status code 500

      at Object.throwServerError (node_modules/@apollo/client/link/utils/throwServerError.js:2:17)
      at throwServerError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:120:9)
      at node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:176:48


  ● Substrate DictionaryService › should return all specVersion

    expect(received).toBeGreaterThan(expected)

    Matcher error: received value must be a number or bigint

    Received has value: undefined

      55 |     const specVersions = await dictionaryService.getSpecVersions();
      56 |
    > 57 |     expect(specVersions?.length).toBeGreaterThan(0);
         |                                  ^
      58 |     dictionaryService.onApplicationShutdown();
      59 |   }, 50000);
      60 | });

      at Object.<anonymous> (packages/node/src/indexer/dictionary/v1/substrateDictionaryV1.spec.ts:57:34)

Report generated by 🧪jest coverage report action from 681f138

@@ -56,14 +62,14 @@ export class <%= props.className %> implements Entity {
static async getBy<%=helper.upperFirst(field.name) %>(<%=field.name %>: <%=field.type %>): Promise<<%=props.className %> | undefined> {
const record = await store.getOneByField('<%=props.entityName %>', '<%=field.name %>', <%=field.name %>);
if (record) {
return this.create(record as <%= props.className %>Props);
return this.create(record as unknown <%= props.className %>Props);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing one as

assert(id !== null, "Cannot save <%=props.className %> entity without an ID");
await store.set('<%=props.entityName %>', id.toString(), this);
await store.set('<%=props.entityName %>', id.toString(), this as Compat<%=props.className %>Props);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The type issue of the id field still needs to be addressed here.

{...this, id: id.toString() } as CompatTransferProps

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Functionally this is fine, its just the types we're getting around. Its better to not copy the data if we can avoid it

Copy link
Collaborator

@yoozo yoozo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There will be a type error when using the store.bulkCreate method because it requires the entity.id type to be a string.

@@ -1,6 +1,7 @@
// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
// SPDX-License-Identifier: GPL-3.0

import {buildSchema} from 'graphql';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can remove it

@stwiname
Copy link
Collaborator Author

There will be a type error when using the store.bulkCreate method because it requires the entity.id type to be a string.

I think that is fine. People don't generally have much use for bulkCreate and if the cache is enabled there is no performance benefit. I want to avoid going down the rabbit hole of trying to update all the types.

@stwiname stwiname force-pushed the alternative-id-types branch 2 times, most recently from d2d059c to f43ee27 Compare December 10, 2024 22:09
@stwiname stwiname force-pushed the alternative-id-types branch from f43ee27 to 454567a Compare December 10, 2024 22:26
@stwiname stwiname merged commit 9716762 into main Dec 11, 2024
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Alternative ID types
2 participants